[운영체제] 9. 페이징 메모리 관리
·
운영체제
메모리 관리 기법 중 페이징 메모리 관리 기법에 대해 더 자세히 알아보자. 페이징(Paging)이란?프로세스의 주소 강간을 0번지부터 페이지로 불리는 고정 크기로 나누고 물리 메모리 역시 페이지와 동일한 크기로 분할하여, 프로세스와 각 페이지를 물리 메미로의 임의의 페이지에 분산 할당하는 메모리 관리 기법이다. 여기서 물리 메모리 페이지 크기의 메모리 블록을 프레임(frame), 페이지 프레임(page frame) 등으로 부른다. 즉 프로세스의 메모리를 분할해서 관리한다는 것이고 메모리를 참조하려면 각 페이지의 위치를 기록해두어야 할 것이다. 그래서 프로세스마다 페이지 테이블이 존재하고 이를 통해 물리 프레임에 매핑된다. MMU 장치는 페이지 테이블을 이용해 논리 주소를 물리 주소로 변환하며,프..
[운영체제] 7. 교착상태
·
운영체제
교착상태란?교착상태라는 말은 프로그래밍 이외에서도 자주 사용되는 말이다. 차가 막혀서 도로에서 이러지도 저러지도 못하는 상황이라던가, 협상의 진전이 없는 상황이라던가 다양한 모습으로 교착상태를 떠올려볼 수 있다.  운영체제에서 교착상태는 자원을 소유한 스레드들 사이에서 각 스레드이 다른 스레드가 소유한 자원을 요청해 모든 스레드가 무한정 대기하는 상황을 말한다.  이는 다중프로그래밍의 고질적인 문제점이라고 할 수 있다. 운영체제는 스레드들에게 자원을 할당해줘아 햐는데 스레드는 하나의 자원만 필요한 것이 아니기 때문이다.   T1부터 T5까지 다섯 개의 스레드가 5개의 CPU에서 동시에 실행되면서 자원을 한개씩 소유하고 있다고 해보자. 그런데 이 상황에서 다른 스레드가 가진 자원을 요청하게 된다면 이때 교..
[운영체제] 6. 스레드 동기화
·
운영체제
스레드 동기화는 왜 필요한 것일까?간단히 말하면 다수의 작업이 공유 데이터에 접근하면 공유 데이터가 훼손될 수 있기 때문이다. 그리고 여기서 다수의 작업이란 프로세스의 작업을 수행하는 스레드라고 할 수 있다. 따라서 공유 데이터에 대한 스레드들의 동시 접근을 해결하는 것이 스레드 동기화의 목표라고 할 수 있다. 스레드 동기화를 위한 가장 간단한 해결 방법은 한 스레드가 공유 데이터 사용에 사용을 마칠 때 까지 다른 스레드가 공유 데이터에 접근하지 못하도록 막는 것이다.  공유데이터 훼손 문제 그런데 사실 이렇게 말로만 공유데이터가 훼손된다고 하면 뭐가 어떻게 훼손된다는건지 직접적으로 이해하기 쉽지 않다.  여기 sum = sum + 10이라는 연산을 수행하는 코드가 있다. 이를 기계 명령으로 보면 mov..
[운영체제] 5. CPU 스케줄링
·
운영체제
프로세스의 실행단위인 스레드를 실행할 때 어떤 스레드를 실행할지 스케줄링을 통해 선택된다고 설명해왔었다.  이제 그 스케줄링이 무엇인지 그리고 어떤 스케줄링 알고리즘들이 존재하는지 알아보자.  1. 스케줄링 개요 한정된 자원에 대한 경쟁이 있을 때 우린 누구에게 자원을 할당해줘야 할지 선택해야 한다. 즉 CPU 자원을 누구에게 할당할 것인지 결정하는 것이 CPU 스케줄링인 것이다. 여기서 선택의 대상이 되는 스레드는 '준비' 상태에 있는 스레드들이다.  스케줄링이 필요하게 배경에는 다중 프로그래밍의 등장이 있다. CPU가 쉬는시간인 CPU 유휴 시간을 줄이기 위해 만들어진 다중 프로그래밍 기법은 I/O이 발생하면 실행하고 있는 프로세스를 중단하고 다른 프로세스를 실행한다.  그런데 어떤 프로세스를 메모리..
[운영체제] 4. 스레드와 멀티 스레딩
·
운영체제
이전 포스팅에서 프로세스와 프로세스 생명주기 등 프로세스가 OS에 의해 어떻게 관리되는지 알아봤었다. 그리고 스레드가 프로세스보다 더 작은 단위로서 프로세스를 실행하는 단위가 된다는 것도 알아보았다. 그럼 이번에는 그 스레드가 도대체 무엇인지 더 자세히 알아보도록 하겠다.  4 - 1 프로세스의 문제점 컴퓨터가 처리하고자 하는 일의 단위를 작업(task)라고 한다. 이 task는 프로세스를 만들어내며,1980년대까지 Unix기반 OS의 실행 단위는 프로세스였다.  그런데 프로세스가 실행단위일 때 생기는 문제점이 존재했다.먼저, 1) 프로세스 생성에 걸리는 시간이 크다는 것이다. 이는 프로세스를 생성할 때 큰 오버헤드를 가져온다는 것을 의미한다. 이전에 알아보았지만 프로세스를 생성하는 과정은 메모리 할당,..
[운영체제] 3. 프로세스와 프로세스 관리
·
운영체제
3 -1. 프로그램과 프로세스이제 프로그램과 프로세스에 대해서 본격적으로 알아볼 때 가 된 것 같다.이 전에도 말했겠지만  프로그램은 하드디스크, USB등 저장 장치에 저장된 실행 가능한 파일을 말한다. 프로그램이 메모리에 적재되어 실행중일 때 이를 프로세스라고 부른다. 여기서 실행중이라는 것은 CPU에 의해 실행되거나, 준비 상태이거나, 실행 대기 상태이거나. 이 모든 상태를 실행 중이라고 말한다.  즉 OS는 응용프로그램을 메모리에 적재하고 ,이때 부터 프로세스라고 부를 수 있는 것이다.  프로세스의 특징을 알아보자.OS는 프로르램을 메모리에 적재하고 이를 프로세스라고 한다. OS는 프로세스에게 필요한 메모리를 할당하고 코드와 데이터들을 적재한다.프로세스는 서로 독립적인 메모리 공간을 갖는다(가상 메..
[운영체제] 2. 컴퓨터 시스템과 운영체제
·
운영체제
2-1 컴퓨터 시스템과 하드웨어  시스템 계층 구조 컴퓨터 시스템은 다음과 같은 3개의 요소들이 층을 이루고 있다.   컴퓨터의 시스템 계층 구조는 다음과 같은 특징을 가지고 있다. 1. 사용자는 응용프로그램이나 OS 패키지에 포함된 GUI와 도구 프로그램을 통해 컴퓨터를 활용한다.2. 하드웨어는 OS의 베타적이고 독립적인 지배를 받는다.3. 어떤 사용자나 응용프로그램도 직접 하드웨어에 접근할 수 없다. 오직 운영체제를 통해서만 접근 가능하다.  OS는 응용프로그램과 하드웨어 사이에서 중계자 역할을 수행한다. 즉 하드웨어를 사용하는 사람이 하드웨어에 대해 잘 알지 못해도 사용할 수 있도록 추상화시켜준다고 생각할 수 있다.   하드웨어컴퓨터 하드웨어를 좀 더 자세히 살펴보겠다.   컴퓨터는 크게 CPU, ..
[운영체제]1-2 운영체제의 태동
·
운영체제
지난 포스팅에서 운영체제가 무엇인지 알기 위해 운영체제의 개념에 대해 알아보았다. 그럼 이 운영체제는 어떻게 생겨나게 된 것일까?  1.  고정 프로그램 컴퓨터 시대 - 1940 년대이 당시 컴퓨터는 현재 우리가 사용하는 컴퓨터와는 상당히 다른 모습을 가지고 있다.이 시기는 소프트웨어라는 개념 자체가 존재하지 않고 컴퓨터의 모든 기능을 하드웨어로 만들었다. 이때의 컴퓨터는 단지 실행하고자 하는 하나의 작업을 수행하는 기계에 불과했다.  어떤 작업(이제 작업을 프로그램이라 부르겠다)을 기게에 심고 나면, 그 컴퓨터는 그 작업만을 수행할 수 있었다.즉 하나의 기계는 하나의 기능만을 수행할 수 있었던 것이다. 그렇기에 새로운 기능을 구축하는 일은 매우 어려운 일이었다. 당연히 CPU와 메모리의 개념이 분리되지..