본문 바로가기

운영체제25

운영체제 16장 - 메모리 관리(3) : 연속 메모리 할당 - 운영체제 16장- 연속 메모리 할당 - 컴퓨터의 구조가 발달되어 오면서 운영체제는 다중 프로그래밍 환경을 조성하게 된다. 부팅 직후 메모리에 운영체제가 하드디스크로부터 적재되고 컴퓨터가 동작을 하는 것을 기다린다. 그 후 여러 가지의 프로그램이 동시에 올라와서 스케줄링에 의해 CPU나 I/O를 할당받는다. 처음에 부팅 직후에는 운영체제만 적재되어 있으므로 운영체제를 제외한 공간이 모두 비어 있게 된다. 그래서 big single hole이 생기게 된다. 이 후 프로세스가 생성되고 종료되는 작업을 반복하며 컴퓨터가 동작하게 된다. 이 때는 프로세스들은 여러 위치의 메모리에 적재되기 때문에 scattered holes가 생성되게 된다. 프로세스가 순서대로 쌓이더라도 작업이 끝나는 순서는 정해져 있지 않고 다.. 2017. 5. 2.
운영체제 15장 - 메모리 관리(2) : 메모리 낭비 방지 - 운영체제 15장- 메모리 낭비 방지 - 하드디스크에 존재하는 프로그램들은 메모리의 특정 부분에 적재되어 실행이 된다. 프로그램이 만들어지기 까지 소스 파일, 목적 파일, 실행 파일을 거쳐 로더에 의해 메모리에 올려 지게 되는데 적절한 위치에 적재를 해야 실행을 시킬 수 있다. 앞 장에서 MMU의 재배치 레지스터를 이용하면 부분적으로 적절한 위치에 프로그램을 올릴 수 있다. 이번 장에는 이를 더 넘어가서 어떻게 하면 더 효율적으로 프로그램을 올릴 수 있는지, 메모리 보호를 위해서 메모리를 낭비하는 것을 방지하는 어떤 방법을 사용해야 하는지에 대해 학습 할 것이다. MMU가 메모리 관리를 하는 방법에 대해서 조금 더 상세히 들어가 보자. MMU는 프로그램이 동작할 때 필요한 데이터나 동작들을 메모리의 특정 .. 2017. 4. 29.
운영체제 14장 - 메모리 관리(1) : 주기억장치(메인 메모리) 개요 - 운영체제 14장- 메모리 관리(1) : 주기억장치(메인 메모리) 개요 - 운영체제의 역할 중에 제일 큰 비중을 차지하는 부분이 프로세스 관리와 메모리 관리이다. 앞의 장들로 프로세스 관리에 대해서 배웠다. 이번 장부터는 메모리 관리에 대해서 학습을 할 것이다. 지금 메모리를 생각하면 반도체인 집적회로 메모리를 생각하게 된다. SRAM은 캐시 메모리에 사용되고 DRAM이 메인 메모리에 사용이 된다. 하지만 이전의 메모리는 한 칩 안에 넣는 것이 아니라 개별적으로 메모리를 가지고 있어서 하나의 메모리에 많은 용량을 넣을 수 없었다. 이러한 형태가 트랜지스터 메모리의 형태이다. 이보다 전의 형태는 진공관 메모리 형태로 크기는 크지만 데이터를 넣을 용량은 더 적은 메모리의 형태이다. 70년대에서는 8bit PC.. 2017. 4. 28.
운영체제 13장 - 프로세스 관리(10) : 모니터 - 운영체제 13장 - 프로세스 관리(10) : 모니터 - 동기화 문제를 해결하기 위해서 우리는 세마포라는 도구를 사용하였다. 하지만 동기화 문제를 해결하는데 세마포만이 사용되지는 않는다. 사실 세마포의 경우 오래된 동기화 도구라고 할 수 있다. 현재 사용되는 도구 중 하나가 모니터이다. 특히 자바 프로그램에서는 모니터에 대한 활용이 높다. 세마포가 어셈블리 언어에 적합한 도구라면 모니터는 그보다 고수준인 언어의 도구라고 할 수 있다. 공유자원과 공유자원에 대한 접근함수가 존재한다. 이러한 구역을 임계구역이라고 한다. 모니터의 경우 두 개의 queue가 있는데 각각 배타동기와 조건동기의 역할을 한다. 배타동기의 queue는 하나의 쓰레드만 공유자원에 접근할 수 있게 하는 작용을 하는 공간이다. 특정 쓰레드가.. 2017. 4. 24.
운영체제 12장 - 프로세스 관리(9) : 교착상태 처리 - 운영체제 12장- 프로세스 관리(9) : 교착상태 처리 - 교착상태는 모든 프로세스들이 필요한 자원을 할당 받지 못해 대기를 하고 있는 상태를 말한다. 프로세스는 실행을 위해 여러 자원이 필요한데 어떤 자원은 갖고 있으나 다른 자원은 할당을 받기 위해 대기해야한다. 하지만 다른 프로세스 역시 다른 자원을 가지려고 대기를 하고 있어 모든 프로세스들이 자원을 할당받지 못한다. 위와 같은 교착상태에 빠지는 필요조건은 상호배타, 보유 및 대기, 비선점, 환형대기가 있다. 이에 대해서는 앞장인 교착상태 장에서 설명하였으니 생략하도록 한다. 또한 이를 자원 할당도로 확인하는 방법을 알아보았다. 교착상태가 발생하면 모든 프로세스가 중지하는 현상이 생기므로 큰 문제가 생긴다. 일반 PC의 경우에는 컴퓨터를 껐다가 켜면.. 2017. 4. 23.
운영체제 11장 - 프로세스 관리(8) : 교착상태(Deadlock) - 운영체제 11장- 프로세스 관리(8) : 교착상태(Deadlock) - 프로세스는 실행을 위해 여러 자원을 필요로 한다. CPU, 메모리, 파일 등등 여러 자원을 사용하여 프로세스가 실행된다. 그런데 어떤 자원은 갖고 있으나 다른 자원을 갖지 못할 경우 대기 상태에 들어가서 기다려야한다. 자원은 한정되어 있는데 여러 프로세스가 같이 동작하는 상황이여서 이러한 상황이 발생하게 된다. 그러므로 운영체제는 이러한 자원을 프로세스들에게 잘 할당을 해주어야한다. 만약 잘 할당을 해주지 못하면 앞의 식사하는 철학자의 문제와 같이 모든 프로세스가 자원을 가지려고 대기하는 교착상태에 빠질 수 있다. 교착상태가 일어나는 필요조건은 4가지가 존재한다. 첫 번째는 상호배타(Mutual exclusion)이다. 상호배타는 동.. 2017. 4. 22.
운영체제 10장 - 프로세스 관리(7) : 읽기-쓰기 문제, 식사하는 철학자 문제 - 운영체제 10장- 프로세스 관리(7) : 읽기-쓰기 문제, 식사하는 철학자 문제 - 읽기 쓰기 문제는 공통 데이터베이스에 접근하는 문제를 다룬다. 서버에 데이터베이스가 존재하는데 다른 로컬 컴퓨터들이 데이터에 접근을 할 수 있다. 접근하는 사용자 중에는 Reader와 Writer가 존재한다. Reader는 데이터를 읽기만 하는 사용자이고 Writer는 데이터를 읽고 수정할 수 있는 사용자를 의미한다. 데이터베이스를 사용자들이 모두 공통 사용하므로 임계구역이라고 생각할 수 있다. 우리는 앞의 임계구역 문제를 해결하기 위해 동기화를 사용하였는데 상호배타를 만족시키기 만들어 한 번에 한 개의 프로세스만 접근이 가능하게 만들었다. 임계구역에 데이터를 접근하는 사용자에 접근 권한을 두어 동시에 접근을 할 수 없게.. 2017. 4. 22.
운영체제 9장 - 프로세스 관리(6) : 생산자-소비자 문제 - 운영체제 9장- 프로세스 관리(6) : 생산자-소비자 문제 - 프로세스 동기화는 프로세스 관리 분야에서 중요한 분야이다. 앞의 장들은 동기화를 공부하기 위해 은행계좌 문제를 예시로 들어서 설명하였다. 이번 장은 대표적인 프로세스 동기화에 대한 문제인 생산자-소비자 문제를 설명 할 것이다. 생산자-소비자 문제는 생산자가 데이터를 생상하면 소비자는 그것을 소비하는 형태에서 발생하는 문제를 말한다. 컴퓨터 세계에서 예를 들면 웹 서버와 웹 클라이언트로 들 수 있다. 웹 서버가 데이터를 생산하여 웹에 관련되어 보여주는 작업들을 수행하고 웹 클라이언트는 웹 주소로 접속해 화면을 통해 보게 되는 형태의 소비 작용을 한다. 일반적으로 생산하는 속도와 소비하는 속도에 차이가 존재한다. 실제로 생산되는 속도가 소비하는 .. 2017. 4. 20.
운영체제 8장 - 프로세스 관리(5) : 세마포(semaphore) - 운영체제 8장- 프로세스 관리(5) : 세마포(semaphore) - 프로세스/쓰레드 동기화는 여러 개의 프로세스/쓰레드가 공통으로 데이터에 접근하려고 할 때 발생하는 문제를 해결하는 방법이다. 동기화 부분은 스케줄링과 더불어 프로세스 관리에서 매우 중요한 부분을 차지한다. 세마포는 프로세스/쓰레드 동기화를 위한 도구 중 하나이다. 앞장에서 세마포의 원리에 대해서 알아보았는데 이번 장에서는 더욱 자세히 세마포에 대해 다루어보도록 하겠다. 쓰레드가 동작하는 공간에는 공통 데이터를 수정할 수 있는 임계구역이 존재한다. 쓰레드가 동작을 하면서 임계구역에 들어가게 되면 데이터를 수정할 수 있다. 쓰레드가 코드를 동작하는 도중에 acquire() 명령어가 실행되면 임계구역에 들어가라는 명령이므로 쓰레드가 임계구역.. 2017. 4. 19.
운영체제 7장 - 프로세스 관리(4) : 임계구역 문제 및 세마포어 - 운영체제 7장- 프로세스 관리(4) : 임계구역 문제 및 세마포어 - 앞장에서 프로세스 동기화가 필요한 이유에 대해서 설명을 하였다. 은행계좌 문제를 통해 공통변수인 은행계좌에 대한 동시 업데이트가 발생하면 문제가 발생할 수 있다. 따라서 우리는 한 번에 한 쓰레드만 업데이트하는 프로세스 동기화가 필요하다. 이러한 문제를 임계구역 문제라고 한다. 여러 개의 쓰레드로 이루어진 시스템에서 각각의 쓰레드는 코드의 영역을 가지고 있는데 이 부분을 임계구역이라고 한다. 임계구역에서는 공통으로 사용하는 데이터를 바꾸거나 테이블을 업데이트하거나 파일을 쓰거나 하는 일을 할 수 있다. 앞의 은행계좌 문제로 설명을 하면 은행계좌에 대한 영역이 바로 임계구역이 되는 것이다. 임계구역을 영어로 하면 Critical sect.. 2017. 4. 18.