본문 바로가기

728x90

ComputerScience/Operating System

(10)
OS - 8.2 Virtual Memory 1. Segmentation - 이전의 memory management chapter에서 segmentation을 다루었다. - 프로세스를 동적인 크기의 segment들로 나누어서 메모리에 할당하는 방식이고 이를 관리하기위해 segment table을 사용한다고 했다. - 이번 장에서 자세하게 주소 변환 과정을 살펴보자. - 먼저 가상주소의 seg#로 segment table을 찾아 가서 메인 메모리 위에 올라와 있는 해당 segment의 실제 시작 주소를 찾는다. - 여기에 offset(segment의 시작 주소로부터 떨어진 거리)을 더해서 실제 물리 주소를 계산한다. 2. Translation in Segmentation/Paging System - segment table에서 각 segment의 b..
OS - 8.1 Virtual Memory 1. Virtual Memory - 메인메모리의 크기는 한정적이다. - 더 큰 메모리의 수요를 만족시키기 위해 무한에 가까운 메모리를 사용하는 듯 해주는 방법이다. - 만약 프로세서가 참조해야하는 데이터가 Secondary Memory에 있다면 그 부분을 메인메모리로 옮겨와 작업을 하도록 한다. 결국 사용자는 무한한 메모리를 가진 것 처럼 느낀다. - 이전 장에서 프로세스는 paging, segmentation으로 여러 조각으로 나뉘어 비 연속적인 메모리 공간에 저장이 되고 매번 logical adress를 physical address로 run time에 변환하여 접근한다고 했다. - 위 조건들이 보장된다면 사실 page와 segment들은 굳이 메모리에 항상 존재해야할 필요가 없다. - 여기서 가상 ..
OS 7 - Memory Management 1. Memory Management - 이제까지 OS가 프로세스를 어떻게 관리하는지 알아보았다. - 이번에는 OS의 중요한 역할 중 하나인 메모리 관리에 대해 알아본다. - Relocation - 프로세스는 실행될 준비가 되면 메모리에 올라온다. 잠깐 block되면 메모리 공간을 비워주었다가 ready상태가 될때 메모리에 올라온다. - 이렇게 프로세스들이 swap되는 일은 매우 빈번하게 일어나기 때문에 항상 메모리의 같은 위치에 프로세스가 올라가도록 할 수는 없다. - 프로세스가 메모리의 500 번지에 올라가 있다고 가정하자. branch명령으로 200번지를 건너뛴다면 700번지에 있는 명령어를 참조하게 된다. - 만약 이 프로세스가 block되었다가 이번에는 1000번지에 올라가게 되었다고 해보자. ..
OS - 6 Concurrency: Deadlock and Starvation 1. Deadlock - 1번부터 4번까지의 자동차를 프로세스라고 생각하고 각자 교차로를 빠져나가기 위해 a,b,c,d라는 자원을 획득해야하는 상황을 가정해보자. - 2번은 3번이 비켜주길 원하고 3번은 4번이 비켜주길 원하면서 네 차량 모두 block된 상태를 Deadlock이라고 한다. - 즉 서로 다른 프로세스가 서로 작업이 끝나길 기다리면서 나아가지 못 하는 상태를 의미한다. - 이번에는 프로세스가 메모리를 요청하는 과정에서 Deadlock이 발생하는 경우를 살펴보자 - 총 할당 가능한 메모리 공간은 200KB이다 - 이때 p1, p2가 각각 80KB, 70KB의 메모리를 할당받은 상태에서 각각 또 60KB, 80KB의 메모리를 요청한다고 하면 어느 누구도 메모리를 할당 받지 못하고 서로 메모리 ..
OS - 5.2 Concurrency: Mutual Exclusion and Synchronization 8. Monitors - 이제까지 mutual exclusion을 구현하기 위한 하드웨어의 지원 방법과 os의 지원방법을 공부했다. - 세마포어를 활용한 상호배제는 올바르게 구현하기가 어렵다. 그래서 생겨난 더 쉬운 방법이 모니터이다. - 세마포어를 프로그램으로 구현한게 모니터이다. - 이번에는 Programming Language차원에서, 좀더 high level로 비교적 쉽게 mutual exclusion을 지원하는 방법을 알아본다. - 모니터라는 공간은 공유자원과 공유자원에 대한 접근 함수가 있는 공간이다. 이 공간에는 프로세스가 하나만 존재할 수 있다. - 또한 공유 자원에 대한 접근은 모니터 내부에 있는 접근 함수를 통해서만 가능하다. - 이 한명만 존재할 수 있다는 규칙으로 상호배제가 보장되는..
OS - 5.1 Concurrency: Mutual Exclusion and Synchronization 1. Introduction - 컴퓨터의 자원(i/o device, memory 등)들은 유한하다. 이 유한한 자원을 여러 프로세스, 쓰레드가 순서대로 돌아가면서 사용해야하는데 여러 프로세스 혹은 쓰레드가 한개의 프로세서 혹은 여러 프로세서에 할당되어 작업되기 때문에 필연적으로 여러 프로세스가 동시에 공통된 자원을 요구하는 등의 문제들이 발생할 수 있다. - 이런 병렬적 수행에서 발생하는 문제들을 살펴보고 어떻게 운영체제가 프로세스와 쓰레드를 관리하는지 살펴보자. 2. Race Condition - 프로세스 혹은 쓰레드 a,b가 A라는 변수를 읽고 값을 수정한다고 해보자 이런 상황에서 a,b중 누가 먼저 실행되느냐에 따라 두 프로세스의 실행 결과가 바뀔 것이다. - 즉 하나의 자원을 여러 쓰레드가 사용하..
OS - 4 Threads 1. 프로세스와 쓰레드의 차이 - 프로세스는 자원을 소유하는 단위이다. - 프로세스는 자기가 할당받은 메모리 공간 혹은 i/o모듈을 소유하고있다. 즉 프로세스는 리소스를 할당 받는 단위가 된다. - 반면에 쓰레드는 운영체제와 cpu scheduling, 실행의 단위이다. dispatcher에 의해 cpu를 점유하는 단위이다. (dispatch unit) - 하나의 프로세스에는 한개 이상의 쓰레드가 존재할 수 있다. - 즉 프로세스가 컴퓨터에게 시킬 작업이라면 이 작업을 수행하는 작업자(쓰레드)가 여러명 있는 것이다. - 쓰레드는 가는 실타래처럼 그림에서 묘사되는데 이는 직접 cpu에 의해 수행되는 instruction의 궤적(trace)이다. - 이 쓰레드들은 같은 프로세스에 존재하기 때문에 결국 프로세..
OS - 3 Process Description and Control 1. Process Elements - 앞에서 간단하게 프로세스가 무엇인가에 대해 살펴보았다. 이번장에서 자세히 알아볼텐데 일단 프로세스가 무엇으로 구성되어있는지 살펴보자. - 프로세스는 메인메모리에 올라와 있는 (실행하고자하는) 프로그램의 일부분이다. 당연히 프로그램의 코드가 들어있고 그 프로그램 코드가 사용할 혹은 관련된 데이터들이 있을 것이다. - 그리고 뒤에서 더 자세히 알아볼테지만 프로세스가 현재 cpu에 의해 돌아가고 있는지 아니면 잠깐 쉬고 있는지 등의 상태를 나타내는 state, 프로세스가 마지막으로 실행되었을 때 cpu register값들을 가지고 있다. 이 정보를 알고 있어야 실행중이던 프로세스를 다시 실행할 때 어디서부터 일을 시작하면 되는지 cpu가 알수 있을 것이다. - 이 밖에도..

728x90